  package com.hzqy.web.ac.activity;

import java.util.HashMap;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.hzqy.service.activity.ActivityVoteServiceBean;
import com.hzqy.web.login.SessionKey;
import com.hzqy.web.vo.activity.ActivityVoteUserVo;

@Controller
@RequestMapping("/")
public class ActivityVoteAction {
	protected final Logger LOG = LoggerFactory.getLogger(getClass());
	
	@Resource
	private ActivityVoteServiceBean activityVoteServiceBean;
	
	/**
	 * 此ACTION有两个作用：
	 * 1、用户为目标投票，f_avu_type需要为1。
	 * 2、为用户增加可投票数，f_avu_type需要为2
	 * 注：修改本方法时需要注意，不同投票类型是否受影响
	 * @param session
	 * @param voteUserVo
	 * @return
	 */
	@RequestMapping("/activity/vote")
	@ResponseBody
	public Object vote(HttpSession session,ActivityVoteUserVo voteUserVo) {
		int flag=0;
		String serverid= String.valueOf(session.getAttribute(SessionKey.SESSION_SERVERID));
		voteUserVo.setF_avu_serverid(serverid);
		int dateFlag=1;
		if(!("null".equals(serverid)||"0".equals(serverid))){
			if(voteUserVo.getF_avu_type()==2){
				dateFlag=activityVoteServiceBean.prvingContentDate(voteUserVo);
				if(dateFlag == 1) {
					//执行更新队伍总票数
					flag = activityVoteServiceBean.updateGroupVoteNum(voteUserVo);
				}
			} else {
				flag=activityVoteServiceBean.insertVoteUser(voteUserVo);
			}
		}
		if(dateFlag==0){
			flag=3;//截止时间到期
			LOG.error("队伍已经截止投票==="+voteUserVo.getF_avu_contentid()+"用户账号:=="+serverid);
		}
		return flag;
	}
	
	/**
	 * f_avu_type投票类型，1为f_avu_serverid增加票数，2为减投票数，3为系统赠送票数
	 * 根据f_avu_type进行分组得到当前用户的可投票数，计算规则为：
	 * 1、当返回为空或者为0时，则页面根据业务规则显示用户可投票数(显示系统赠送票数)。
	 * 2、当返回不为空，则用户可投剩余票数为f_avu_type为1和为3累加的值减去f_avu_type为2的值。
	 * @param session
	 * @param voteUserVo
	 * @return
	 */
	@RequestMapping("/activity/selectVote")
	@ResponseBody
	public Object selectVote(HttpSession session,ActivityVoteUserVo voteUserVo) {
		String serverid= String.valueOf(session.getAttribute(SessionKey.SESSION_SERVERID));
		voteUserVo.setF_avu_serverid(serverid);
		return activityVoteServiceBean.selectVote(voteUserVo);
	}
	
	/**
	 * 根据f_catalog_id获取队伍总票数
	 * @param voteUserVo
	 * @return
	 */
	@RequestMapping("/activity/selectVoteGroupByCatalogId")
	@ResponseBody
	public Object selectVoteGroupByCatalogId(ActivityVoteUserVo voteUserVo) {
		return activityVoteServiceBean.selectVoteGroupByCatalogId(voteUserVo);
	}
	/**
	 * 临时添加——赠票卡号查询票数
	 * 表结构如下
		CREATE TABLE `tmp_ticketnum` (
		  `password` varchar(100) DEFAULT NULL COMMENT '赠票卡号',
		  `frequency` int(10) DEFAULT '0' COMMENT '兑换次数默认参数',
		  `voteNum` int(11) DEFAULT '0' COMMENT '票数'
		) ENGINE=MyISAM DEFAULT CHARSET=utf8;
	 * @param password
	 * @return
	 */
	@RequestMapping("/activity/selectTicketNum")
	@ResponseBody
	public Object selectTicketNum(HttpSession session,String password){
		HashMap<String,Integer> map=new HashMap<String,Integer>();
		String serverid= String.valueOf(session.getAttribute(SessionKey.SESSION_SERVERID));
		int voteNum=activityVoteServiceBean.selectTicketNum(password,serverid);
		map.put("voteNum", voteNum);
		if(voteNum>0&&!("null".equals(serverid)||"0".equals(serverid))){
			ActivityVoteUserVo voteUserVo=new ActivityVoteUserVo();
			voteUserVo.setF_avu_activityid("0");
			voteUserVo.setF_avu_serverid(serverid);
			voteUserVo.setF_avu_source(Integer.parseInt(password));
			voteUserVo.setF_avu_contentid(0);
			voteUserVo.setF_avu_votenum(voteNum);
			voteUserVo.setF_avu_type(1);
			voteUserVo.setF_avu_memo("give_ticket");
			int flag=activityVoteServiceBean.insertVoteUser(voteUserVo);
			map.put("flag", flag);
		}else{
			map.put("flag", 0);
		}
		return map;
	}
	@RequestMapping("/activity/selectUserOrderVoteNumList")
	@ResponseBody
	public Object selectUserOrderVoteNumList(HttpSession session,String productList){
		HashMap<String,Integer> map=new HashMap<String,Integer>();
		String serverid= String.valueOf(session.getAttribute(SessionKey.SESSION_SERVERID));
		int voteNum = 0;
		if(!("null".equals(serverid)||"0".equals(serverid))) {
			voteNum = activityVoteServiceBean.selectUserOrderVoteNumList(serverid,productList);
		}
		map.put("flag", voteNum);
		return map;
	}
}
